DFUSE Tutorial - Part 1 By: Ben & Pat McBride July 5, 1995 E-mail us at --- Compuserve: 74454,1421 Internet: 74454.1421@compuserve.com =========================================================================== What you will learn in Part I: How to use the DFUSE level editor (LEVMAP), Sectors, Lines, Vertices, Doors, Textures, Objects, and How to test a level. ============================================================================ Hello! Welcome to the DFUSE Tutorial! *** You DO NOT need ANY Doom experience to use this tutorial! *** We are assuming that you already have gotten DFUSE to run properly. If you are having trouble getting DFUSE to work, I suggest you read the README file. The way this tutorial works is like this: you print out the tutorial, load up DFUSE, read the tutorial and do what it says. If you don't have a printer... well, I guess you can read the tutorial and later go back to DFUSE and try out what you learned. Before we get started, there are a few things we have to do. I assume you have installed DFUSE properly (with the -d option) and it has made a whole bunch of directories on your hard drive. Ok, now, from the DOS prompt, go to the directory: c:\dark\dfuse\dark The DFUSE program is stored on c:\dark\dfuse, and your levels will be stored by DFUSE on the \dark subdirectory. So, what are we doing here so soon if you haven't even made a level yet? Well, if you want to start making your own level in DFUSE, you first have to run the NEWLEVL!.EXE program, which just happens to be in this directory. Type "NEWLEVL!", and it creates six new files, all called NEWLEVEL with different extentions. In case you haven't read (or tried to read) the Dark Forces Specs, here is a basic description of the different types of files used by Dark Forces: .LEV --- These files store the info on the structure of the level .O --- 'O' stands for object. These contain all the info on the objects in your level (more on objects later). .INF --- I'll explain more about this one in the next tutorial. Basically it is used to make switches, elevators, conveyor belts etc. .GOL --- This contains the goals that the player must meet to complete the level (more on this in another tutorial). .PAL --- This is the color palette used in your level. Unlike Doom, Dark Forces levels have a slightly different palette for each level. .CMP --- You won't have to worry about this one. If your really interested in it, you can find more info in the DF specs. All of the above files can be edited in (except for .CMP and .PAL) any old text editor (like the one you used to print this out!). We just use the EDIT program that comes with MS-DOS. You won't have to be editing the .LEV or .O files (that's what DFUSE is for!), but you will be editing the .INF and .GOL files - don't worry, we'll explain how to do that in another tutorial. Allright, if your confused about all that file stuff, it's OK because we won't be using it for a while. Now, I'm sure you want to start learning how to make a level. Just be patient, we'll start pretty soon... Now back to the NEWLEVEL files. We can't keep them named NEWLEVEL, because we have to replace them with one of Lucasart's levels (Don't worry, this won't delete Lucasarts' levels! They are safely stored on your CD-ROM). The first level of Dark Forces, Secret Base, has the filename SECBASE, so we want to rename all the NEWLEVEL files as SECBASE. To do this, just type (from the c:\dark\dfuse\dark directory) "rename newlevel.* secbase.*" Now SECBASE is ready to be edited in DFUSE. Go to the c:\dark\dfuse directory and run DFUSE by typing "dfuse". From the DFUSE menu, type "L" to go to the levels menu. By typing "C", you will be able to choose the level you want to edit. To get to the new level that was created, choose SECBASE from the list of levels, and push enter. To edit the level using LEVMAP (DFUSE's level editor), type "M" to view the level map. After DFUSE reads a few files, you should be on a screen with a few shapes. This is the level you will use to create your own. Now, you can begin learning how to use the LEVMAP editor. *Note* The DFUSE LEVMAP editor runs ALOT better with a smartdrive cache. I use a cache of 500k, and it really improves the speed of LEVMAP and doesn't seem to interfere with running Dark Forces. If you don't know how to use smartdrive, read your DOS manual or from the DOS prompt type "help smartdrive". You don't *have* to use a smartdrive cache to be able to make levels, but it will save you alot of time! OK, looks like we're ready to get started! ================================= Section 1 - A Really Simple Level ================================= In this section we will show you how to make a simple 2 room level with a door in between. Ok, so you should now be in LEVMAP ready to make a new level. If you look around, you should see three shapes in the center of the screen. These shapes are actually 'rooms' which you could walk around in if you were playing Dark Forces. All 'rooms' are known as Sectors in DFUSE. So right now there are three sectors on the screen. Why are there sectors here if this is supposed to be a new level? It is because of the way DFUSE works. In DFUSE you don't actually "make" new sectors or objects - you "copy" them. Thus you have to start with something. You'll understand what I'm talking about more as we go on. LEVMAP starts out in sector mode when you first load it up, so right now you are in sector mode. To select a sector, move the cursor (with the mouse) to anywhere inside the sector you want to select, and click the mouse button. The sector should change color to red. You may be wondering why one of the sectors is yellow, but don't worry about that for now. In the upper right hand corner of the screen (the right most blue box), there are a bunch of abbreviations and numbers. This box gives you information about the currently selected sector. Here is a description of what all those abbreviations mean: SECTOR INFO BOX Nam: ' ' [Name] (This is the name of the sector) Lay [Layer] (The layer (or level) that the sector is on) FAl: [Floor Altitude] (how high the floor is) CAl: [Ceiling Altitude] (how high the ceiling is) FTx: [Floor Texture] Xo: [X Offset] Zo: [Z Offset] (Don't worry about CTx: [Ceiling Texture] offsets for now) Flg: [Flags] (Setting different flags changes the characteristics of the sector) Amb: [Ambience] (The light level of the sector. range is 0 (dark) to 32 (light)) 2Al: [2nd Altitude] (Used for making water and bridges, more later on this) Alright, are you ready to make your own sector? Good! Highlight the sector on the far right. Ok, now move the cursor anywhere on the screen, and push the Insert key on the keyboard...Tah Dah! You now have another sector! Simple, isn't it. Now we want to position the sector near the other one. To move the sector, put the cursor where you want to move it to, and click the right mouse button. Notice how the sector moves - the point on the sector where there is a large dot (the upper right hand corner of the sector) moves to the point of the cursor. Move it around some more until you get the feel for how the sector moves. We now want to position the sector above the other one, and line it up. To do this we need to use the Grid. Pushing will bring up the grid. The grid consists of a bunch of orange dots, which help you line things up. Move the sector around some more, and you'll see that the sector 'snaps' on to the grid, and you can't move it anywhere in between the grid dots. Move the sector so that it looks like this: ________ | | | copied | (move the sector to here) | sector | |________| . . . . ________ | | |original| Diagram 1-1 | sector | |________| You are now ready to edit the sector. This is done by highlighting the sector (highlight the copied sector) and pushing the Enter key. Look in the blue box in the upper right, and you'll see that "Nam:" is highlighted in red. By using the up and down (or left and right) arrow keys, you can highlight the different things (try it). Got it? Good! Now highlight "Nam:" again. It would be really nice to change the name of this sector we have copied to something different than the original. After all, its not even the start point. Hit Enter. You are now ready to type in the name of your sector. Let's call it 'my_sector'. To do that type in "my_sector" and push enter. Now push the Escape key. This gets you back to the level, and notice that your sector is now named 'my_sector'. Now you know how to copy and edit sectors, so we're ready to go to line mode. To change from sector mode to line mode, push "L". You can now highlight the individual lines in each sector. If you look in the blue box in the right corner, you'll see it has different information. Looks like its time for another info box: LINE INFO BOX Adj: [Adjoin] Mir: [Mirror] Wlk: [Walk] (These are all handled by DFUSE so you don't have to worry about them) Mid: [Middle Texture] (Texture on the middle wall, like Doom normal texture) Top: [Top Texture] (Texture above the middle wall, like Doom upper texture) Bot: [Bottom Texture] (Texture below the middle wall, like Doom lower tex.) SGN: [Sign] (used to put button textures on walls) Flg: [Flags] (Setting different flags changes the characteristics of a line) Lig: [Light] (Light level of the selected wall, can be different than the sector light level) At this point, I should tell you how to zoom in and out. If you push the "+" key (make sure you hold shift, or you'll get the "="), it will zoom in a little, and the more you push it, the more it will zoom in. The "-" key works the same, except that it zooms out instead of in. Try them out. Another neat feature is the center feature. If you push the "C" key, it will zoom in alot on the position of the cursor. This will come in handy later. Also, if you push the "*" key, the map will zoom out to its original position. You can also move around the map with the arrow keys. If you still have the grid on, you can turn it off by pressing , and just so you know, pushing "G" and will cycle through the different grid sizes. Try all these out to see how they work. Back to lines. Let's make our sector ('my_sector') a little larger. Highlight the right most line of the sector. You can now move the line around, just like the sectors - with the right mouse button. Notice that when you move the line the sector stretches out with the line and is still connected. Ok, move the line out to the right a little, so the sector will be longer. Now highlight the left line and move it out to the left a bit. You might also want to move the top line up some more. You now have a bigger sector! The screen should look somewhat like this: _______________ | | | | | 'my_sector' | | | |_______________| . . . . ________ | | Diagram 1-2 |original| | sector | |________| Now let's change the look of our sector. Highlight one of the lines, and press enter. Lines can be edited just like sectors. Highlight "mid:" and push enter to change the middle texture. DFUSE goes to the texture selection screen. You can use the arrow keys to move up and down the list of textures, and the currently selected texture will be shown to the right. Find a texture that you think looks cool, and push enter to select it. The wall will now look like the texture you selected when you play your level. Its sort of like putting wallpaper on a wall in your house (except it doesn't take half as long ). You don't have to change the top or bottom textures for this wall, because only the mid texture will be seen. We'll explain when to use top and bottom textures later on, of course! *Note for DOOMers* Unlike Doom, every single line in Dark Forces has mid, top, and bottom textures, even lines where you only need mid texture. The DF engine just uses the textures it needs, and disregards the others. ****************** So what if you want to change the textures on ALL the walls in the sector? Do you have to highlight and change each one individually? No, of course not! DFUSE has a nifty little feature called Multiselection, which lets you highlight a whole bunch of things and change them all at the same time. To multiselect a line, on it. The line should turn white. Every other line you on will become white also and be added to the multiselection. So, multiselect all four wall in 'my_sector', and then press to edit them all at the same time. If you only press enter, it will only edit one line, so be sure to press . Highlight "mid:" to change the middle texture, and press enter. Select a nice looking texture, and press enter. Now press escape to get back to the map. Hitting the Backspace key will unselect all the multiselected walls, so do that now. If you did everything correctly, all the walls should have the same texture on them. Check them all to make sure. Multiselection not only works with lines, but also sectors. Also, you can change other things, such as flags, light level, floor/ceiling heights etc., not just textures. Making the Door---- Now its time to make a door! You can start by going to sector mode (push "S"). Create a new sector by copying 'my_sector' to a free spot on the map. This sector will be our door. Before you can make the door, however, I have to introduce you to another mode in DFUSE: Vertices mode. Pushing "V" will take you into vertices mode. You should now notice that there is a green dot in each corner of the sectors. These green dots are called Vertices. What is a vertice? Well, its simple: every line has two vertices, and the vertices are the starting and ending points of the line. X------------------------X vertice line vertice You can highlight vertices by clicking on them, and you can move them just like lines and sectors...with the right mouse button. Vertices cannot, however, be edited by pressing enter. There is no way to edit a veritce, because there is no need to. Our goal now is to make a door in between the two sectors. When we are done it should look like this: X---------------X <- vertice | | | | | 'my_sector' | Diagram 1-3 | | X-----X--X------X | | <- door X--X--X--X_ | | |original| | sector | X--------X To make room for the door in between the sectors, we must add two vertices to the bottom line of 'my_sector' and two to the top line of 'start_point'. To insert vertices, first go to line mode ("L" key), then highlight the bottom line of 'my_sector'. Now push the Insert key. This splits the line by adding a vertice in the center of the line (go to vertices mode to look at this, then go back to line mode). The line that was previously there has now been split into two different lines. Highlight one of these lines, and push Insert to split it. Now go back to vertices mode. Great, we now have 4 vertices on the bottom line of 'my_sector'. But they are in the wrong spots, so you'll want to move the vertices towards the middle of the line, to make it look like the above diagram (move the vertices with the right mouse button, and notice they are still attached to the line). If your lines are not straight, you may want to turn on the grid (alt + G) and move the vertices around on it until the lines are straight. The lines don't have to be straight, but it looks nicer for what we're doing. Now you'll want to add two more vertices to the top line of 'start_point'. Do this the same way you did the bottom line of 'my_sector'. Make sure you line up the two middle vertices with the two from 'my_sector', so that our door will be straight. Ready to put the door in? Here we go... Go into vertices mode first. What we want to do is connect the 4 vertices of the door to the 4 vertices on the lines of the sectors, thus placing the door sector in between the other two sectors. To connect vertices, you use . So if you highlight a vertice, move the cursor near the one you want to connect it to, and press , it will move the highlighted vertice onto the other one, and connect the two vertices. This may sound confusing, so we'll show it to you with a diagram: X---------------X | | 1 2 | 'my_sector' | X-----------X | | | | | a b | | soon to | X----X----X-----X | be door | X-----------X X--X----X--X 3 4 | c d | | | | | X----------X Diagram 1-4 First connect "1" to "a" (see diagram 1-4 above) by highlighting "1", moving the cursor near vertice "a", and pressing . Then connect vertice "2" to "b", "3" to "c", and "4" to "d". It should now look like diagram 1-3. Name the door sector 'door'. But we're not done yet! We now have two problems: 1) The door sector won't open like a door 2) You can't walk through the lines that make up the door, so you wouldn't be able to walk under the door even if you could open it. First let's deal with problem #2. To make lines that the player can walk through, we must "adjoin" the lines. Go to line mode. Now click the left mouse button a little bit below line c-d (see diagram 1-4). The line should turn red and be facing inside sector 'start_point'. Now click a little above line c-d. The same line should be red, but now facing towards the 'door' sector. If you're having trouble highlighting the lines, zoom in some, and try again. There are actually two lines on line c-d, one facing towards the 'start_point' sector, and another facing towards the 'door' sector. To make it so the player can walk through line c-d, we have to adjoin the two lines. Highlight line c-d, and press the "A" key to adjoin the two lines. A red box should appear and say "1 adjoin/mirror found". If it says "no adjoin found", you must have done something wrong, so go back and see if you can find the problem. If it worked, the line should turn dark green. For future reference, all dark green lines are lines that the player can walk through. Now highlight line a-b. Push "A" and it should adjoin this line. Now the player will be able to walk through the door sector! Now to solve problem #1. This one is simple - to make the sector 'door' a door you can open and close, we have to set the appropriate flag. So I'll teach about how to use the flags. Go to sector mode. Highlight the sector 'door'. Push enter. Move the red cursor to the first 0 after "flg:", and push enter. A list of flags now comes up. To set a flag, push the spacebar. The flag will turn red. You can set as many flags as you want to, not just one, and enter takes you out of the flags. Here is the list of flags you should see: +-----------------------------------+ | 1 EXTERIOR - NO CEIL. (SKY) | used for making sky | 2 DOOR | makes the sector a door | 4 SHOT REFLEXION / MAG.SEAL | walls reflect weapon shots | 8 EXTERIOR ADJOIN | for adjacent skys | 16 ICE FLOOR (SKATING) | makes the floor 'slippery' | 32 SNOW FLOOR | | 64 EXPLODING WALL/DOOR | makes the sector an exploding door | 128 EXTERIOR - NO FLOOR (PIT) | used for making pits | 256 EXTERIOR FLOOR ADJOIN | for adjacent pits | 512 CRUSHING SECTOR | makes the ceiling crush the player | 1024 NO WALL DRAW / "HORIZON" | horizon moves with eye level | 2048 LOW DAMAGE | Sector takes small amt. of life | 4096 HIGH DAMAGE (both = GAS) | both can be combined for GAS | 8192 NO SMART OBJECT REACTION | | 16384 SMART OBJECT REACTION | | 32768 SUBSECTOR | player doesn't move with sector | 65536 SAFE SECTOR | | 131072 RENDERED (do not use!) | | 262144 PLAYER (do not use!) | | 524288 SECRET SECTOR | increases the secret % when entered +-----------------------------------+ We won't be using most of these flags in this part of the tutorial, but I just wanted to make the chart complete. If there is no description by a flag, that means that its function is unknown to us. If anyone knows what these other flags do, please e-mail us with a description of them. As you can probably figure out, we want to set the DOOR flag (flag 2). Simply highlight flag 2, press the space bar, then press enter to exit the flags. After flg: there should be a "2". Press escape to get back to the map. high- light a different sector, and you'll notice that the door sector is now yellow. This means that you have made a door! It's as simple as that! Now all we have to do is make it look like a door. Change the TOP textures on the front and back walls of the door to a door texture (or something that looks like a door). You would want to change the TOP textures because the MID texture will not be shown. On lines that you can walk through, the MID texture is not shown (unless you specifically tell it to be shown) so that you can see what is on the other side of the line. We will also want the door sector to be darker than the other sectors, so it will look like there is a shadow under the door. To do this, edit the sector and change "amb:" from 31 to 25. The lightest a room can be is 32, and pitch black is 0. We have shown you how to change wall textures, but ceiling and floor textures can also be changed. You can do this by editing the sector, highlighting "FTx:" for floor texture or "CTx:" for ceiling texture, and pushing enter. You can now pick a texture just as you would a wall texture. However, for floors and ceilings, only size 8 x 8 textures will work. If you pick a larger texture it won't look right, so be sure to pick an 8 x 8. Adding Objects------ Objects consist of enemies, power-ups, ammo, scenery etc. Before we add in some objects, though, we'll have to switch modes again. To switch to object mode press "O". After you switch to object mode you should see a small green X- and a small gray -S- in the 'start_point' sector. The red circle around the green -X- means it is the currently selected object. You can select objects using the first mouse button, and move them with the second mouse button. You'll also notice there is different info for OBJECTS in the right blue box. Here's a chart showing what it all means: OBJECT INFO BOX Cls: [Class] (The catagory of the object) Nam: [Name] (File name of the object) Log: [Logic] (The way the object acts in Dark Forces) X:,Z:,Y: [X,Z, & Y coordinates] (Tells Dark Forces where to place the object) Pch: [Pitch] Rol: [Roll] Yaw: [Yaw] (The angle the object is facing) Dif: [Difficulty] (The difficulty level the object appears on) Seq: [Sequence] (Autimatically set by DFUSE) If you highlight the green -X- you'll notice the Logic of this object is PLAYER. This object is the player start. If you look at the red circle around the player start, you'll notice there's a line extending upward. This red line shows the way the object is facing. By changing the YAW, you can change the way the object faces. The YAW can be any number between 0 and 360 (0 = up, 90 = right, 180 = down, 270 = left). Next, look at the Y coordinate of the object. The object's Y coordinate is 4. Since the sectors floor altitude is 0, the player start is 4 off the ground. This just means that when you play your level in Dark Forces, you'll fall to the ground when you start. By changing the Y coordinate of an object, it will change the altitude of the object. You won't have to worry about changing the X and Z coordinates begause DFUSE does that for you. Try it out by changing the player start's Y coordinate to 0, so you will start on the ground. Now, you're probably wondering what the gray -S- is. Let's highlight it to find out. The class of this object is SAFE. A SAFE is a save point. When playing a level in Dark Forces, if you walk into a room containing a SAFE (it's invisible in the game), you will start at the SAFE when you die. The YAW is 0 meaning that you will face up (or north). Let's try to add another type of object to our level. Use the arrow keys to move the map to the left until you see 2 more sectors. In the big green sector, you'll notice there are lots of objects. The different colors mean they have different Class. This sector is here so you can copy objects from it to add to your level. Highlight the brown circle with Logic: ENERGY (this is standard ammo for your pistol). Move the cursor back into the 'start_point' sector and position the cursor in an empty spot. Press Insert to Copy the ammo into 'start_point'. The Class of the ammo is FRAME, meaning it is only 1 frame of animation. The YAW won't matter for objects with a Class: FRAME because they look the same from every angle. Since you would probably want more ammo in you level, lets copy it a few times. Highlight the ENERGY and copy it a few more times to different spots in the 'start_point' sector. But, what good is ammo if there's nobody to shoot. Lets add a couple of Storm Troopers to our level to make it more fun. Find the blue box object with Nam: STORMFIN.WAX (this is the file that contains the storm trooper). Copy the storm trooper to 'my_sector' and position him on the left side near the door. The only problem is that he's facing up. When you enter the room from the door, he won't even know you're there. So, lets make him face down. To do that, we'll have to change the YAW to 180 (which is south). Now he'll be a much better guard. To make it a little harder, we'll add another storm trooper guarding the door. Copy the storm trooper you just changed to the right side near the door. The room with the objects is really handy for copying objects, but say you wanted to put in an object that it didn't have in it. To make your own object, you start by first copying an object. So, lets copy one of the storm troopers into an open area in 'my_sector'. Now we're going to change the storm trooper into the Death Star Plans. Edit the storm trooper you copied, highlight class, and press Enter. There is a list of the different classes you can choose for you're object. Here's a list of what the classes mean: CLASSES Spirit: Used only for player start Safe: Used only for making save points 3d: 3D objects (ex. Kyle's ship, TIE fighter, mousebot, Death Star holo, etc.) Frame: Objects that aren't animated & only have one view (ex. ammo, weapons, dead guys, other scenery, etc.) Sprite: Objects that are animated, or have more than one view (ex. ALL enemies, and some scenery) Sound: All sounds in the game (ex. water flowing, wind blowing, etc.) Look at what objects are in the different classes before we go on. To put in the Death Star Plans, we'll have to look under the class, SPRITE, because it is animated. After you select SPRITE for your class, highlight 'Nam:' and press Enter. The Death Star Plans are in the file IDPLANS.WAX. After IDPLANS.WAX is selected, we'll have to set the right logic. To do this, we'll need to use DFUSE's "Set Logic" feature. By pressing "S" anytime you are editing the object's info box, DFUSE will set the correct logic for the file you've chosen. Edit the DS plans object and press "S" now. It should change the Logic from TROOP (which was set on the copied storm trooper) to PLANS (which is the Death Star Plans logic). There, you've just created the Death Star plans! If you want to you can add other bad guys, weapons or whatever you want to your level. You also might want to put in a 3d object, like the Death Star hologram, to see what its like. Now you should be finished with the level, so I'll show you how to test it out. Oh, be sure to save your work! This is a very important thing to remember. To save press "F2", then press enter to save. You should save your level often, because you wouldn't want to loose your work! Testing the Level---- There are different ways to test out your level, and I will show you the one I think is easiest. Exit out of LEVMAP by pressing Escape, and if you haven't yet saved your level you'll want to do that now. Now just keep pressing escape until you are back in DOS. Go to the directory c:\dark\dfuse\dark. To test out the level, we will copy all the Secbase files to the c:\dark directory. Dark Forces reads the c:\dark directory before it get the info from the CD, so if the Secbase files containing our level are there, it will read them instead of the level on the CD. To copy our level to c:\dark, type: "copy secbase.* c:\dark" and hit enter. This will copy the 6 files that make up our level. Now just load up Dark Forces as you normally would, and select level 1. When the level loads up it should be the level you made. Try it out and make sure everything works! DFUSE ShortCuts---- Before we finish this part of our tutorial, we would like to show you some shortcut ways to do some of the things we taught you. Be sure to try them all out, for they will save you some time! * If you highlight a line and hit "E" it will extrude the wall. This is good for making doors. * In sector mode, hitting "D" will allow you to scale (make bigger or smaller) sectors and rotate them. * Pushing "K" in sector mode will let you create a sector with as many sides and as large as you specify. * You don't have to connect vertices to connect sectors like we did to connect the door. You can use to connect things in line mode and in sector mode. Connecting in vertices mode is easier to understand, but takes a little more time. * For more shortcuts and features, print out and read the file LEVKEYS.DOC in the c:\dark\dfuse\doc directory. You can also view this file in LEVMAP by pressing F1. Having a printout will come in very handy! Well, that's the end of Part I of our DFUSE tutorial. :( But the good news is, we are going to make more parts! :) Part II will show you things like: How to make a sector inside a sector Floor and Ceiling heights (steps) How to use 2nd Altitude to make bridges and water. How to make exploding walls More about Flags We may even start teaching about .INF files Part III will definately have lots of .INF stuff, like switches, elevators, morphing walls (not to be confused with Power Rangers ) and a whole bunch of other cool stuff!!! FEEDBACK !!!!! ---- That is one thing we need LOTS of! In order to be able to improve our tutorials and make them what you want them to be, you NEED TO TELL US WHAT YOU THINK!!! PLEASE send us e-mail with any questions, comments, complaints, etc. you have. If you don't understand something in this tutorial, you can e-mail us and we'll try to help. Here's our E-Mail addresses: On Compuserve: 74454,1421 From the Internet or any other On-Line service: 74454.1421@compuserve.com Don't Forget to send us FEEDBACK! See you next tutorial! Ben & Pat McBride P.S. If you are on any other online services (besides Compuserve), please upload this file there so it can be widely distributed. Thanks.